package com.premize.grco.dataaccess.daoFactory;

import com.premize.grco.dataaccess.dao.GrcoClienteDAO;
import com.premize.grco.dataaccess.dao.GrcoPDescuentoDAO;
import com.premize.grco.dataaccess.dao.GrcoPLocalizacionDAO;
import com.premize.grco.dataaccess.dao.GrcoPParametroDAO;
import com.premize.grco.dataaccess.dao.GrcoPTipoParametroDAO;
import com.premize.grco.dataaccess.dao.GrcoPUsuarioDAO;
import com.premize.grco.dataaccess.dao.GrcoPVendedorDAO;
import com.premize.grco.dataaccess.dao.GrcoPedidoDAO;
import com.premize.grco.dataaccess.dao.GrcoPedidoProductoDAO;
import com.premize.grco.dataaccess.dao.GrcoProductoDAO;
import com.premize.grco.dataaccess.dao.IGrcoClienteDAO;
import com.premize.grco.dataaccess.dao.IGrcoPDescuentoDAO;
import com.premize.grco.dataaccess.dao.IGrcoPLocalizacionDAO;
import com.premize.grco.dataaccess.dao.IGrcoPParametroDAO;
import com.premize.grco.dataaccess.dao.IGrcoPTipoParametroDAO;
import com.premize.grco.dataaccess.dao.IGrcoPUsuarioDAO;
import com.premize.grco.dataaccess.dao.IGrcoPVendedorDAO;
import com.premize.grco.dataaccess.dao.IGrcoPedidoDAO;
import com.premize.grco.dataaccess.dao.IGrcoPedidoProductoDAO;
import com.premize.grco.dataaccess.dao.IGrcoProductoDAO;


/**
 * Factory for Data Access Objects Strategy The DAO pattern can be made highly flexible
 * by adopting the Abstract Factory [GoF] and the Factory Method [GoF] patterns.
 * When the underlying storage is not subject to change from one implementation to another,
 * this strategy can be implemented using the Factory Method pattern to produce a number of DAOs needed by the application.
 * This class is a Factory Method pattern
 *
 * @author Zathura Code Generator http://code.google.com/p/zathura
 */
public class XMLHibernateDaoFactory {
    private static XMLHibernateDaoFactory instance = null;

    private XMLHibernateDaoFactory() {
    }

    /**
    *
    * @return HibernateDaoFactory
    */
    public static XMLHibernateDaoFactory getInstance() {
        if (instance == null) {
            instance = new XMLHibernateDaoFactory();
        }

        return instance;
    }

    /**
    * This method instantiates the IGrcoClienteDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IGrcoClienteDAO implementation
    */
    public IGrcoClienteDAO getGrcoClienteDAO() {
        return new GrcoClienteDAO();
    }

    /**
    * This method instantiates the IGrcoPDescuentoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IGrcoPDescuentoDAO implementation
    */
    public IGrcoPDescuentoDAO getGrcoPDescuentoDAO() {
        return new GrcoPDescuentoDAO();
    }

    /**
    * This method instantiates the IGrcoPedidoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IGrcoPedidoDAO implementation
    */
    public IGrcoPedidoDAO getGrcoPedidoDAO() {
        return new GrcoPedidoDAO();
    }

    /**
    * This method instantiates the IGrcoPedidoProductoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IGrcoPedidoProductoDAO implementation
    */
    public IGrcoPedidoProductoDAO getGrcoPedidoProductoDAO() {
        return new GrcoPedidoProductoDAO();
    }

    /**
    * This method instantiates the IGrcoPLocalizacionDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IGrcoPLocalizacionDAO implementation
    */
    public IGrcoPLocalizacionDAO getGrcoPLocalizacionDAO() {
        return new GrcoPLocalizacionDAO();
    }

    /**
    * This method instantiates the IGrcoPParametroDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IGrcoPParametroDAO implementation
    */
    public IGrcoPParametroDAO getGrcoPParametroDAO() {
        return new GrcoPParametroDAO();
    }

    /**
    * This method instantiates the IGrcoProductoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IGrcoProductoDAO implementation
    */
    public IGrcoProductoDAO getGrcoProductoDAO() {
        return new GrcoProductoDAO();
    }

    /**
    * This method instantiates the IGrcoPTipoParametroDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IGrcoPTipoParametroDAO implementation
    */
    public IGrcoPTipoParametroDAO getGrcoPTipoParametroDAO() {
        return new GrcoPTipoParametroDAO();
    }

    /**
    * This method instantiates the IGrcoPUsuarioDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IGrcoPUsuarioDAO implementation
    */
    public IGrcoPUsuarioDAO getGrcoPUsuarioDAO() {
        return new GrcoPUsuarioDAO();
    }

    /**
    * This method instantiates the IGrcoPVendedorDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IGrcoPVendedorDAO implementation
    */
    public IGrcoPVendedorDAO getGrcoPVendedorDAO() {
        return new GrcoPVendedorDAO();
    }
}
